using System;

//	"CD" means "Constinous state and Discrete decision (action)"

namespace Reinforcement
{
    public interface CDDecisionMaker	 //	continous state, discrete action
    {
        //  we start in state "state"
        void CDStartInState(double[] state);

        //  what action do you advise to do?
        void CDAdviseAction(ref int action);

        //  what happened then? 
        void CDThisHappened(double reward, double[] next_state);
    }

    public interface CDEnvironment
    {
        // let's start 
        void CDStartInRandomState(); 

        // get the current state; state is for the decision maker, extension is e.g., for drawing
        void CDGetCurrentState(ref double[] state, ref double[] state_extension); 

        // execute another decision
        void CDMove(
                int decision,		//  action to be performed
                ref double reward   //  reward
                );
    }
}
